#include "View.h"

using namespace std;

View::View() {
}

void View::setTipo(string tipo) {
	this->tipo = tipo;
}
void View::setPerto(float perto) {
	this->perto = perto;
}
void View::setLonge(float longe) {
	this->longe = longe;
}
	
string View::getTipo() const {
	return this->tipo;
}
float View::getPerto() const {
	return this->perto;
}
float View::getLonge() const {
	return this->longe;
}

Perspectiva::Perspectiva() {
}

void Perspectiva::setAngulo(float angulo) {
	this->angulo = angulo;
}

void Perspectiva::setFrom(float x, float y, float z) {
	this->from[0] = x;
	this->from[1] = y;
	this->from[2] = z;
}
void Perspectiva::setTo(float x, float y, float z) {
	this->to[0] = x;
	this->to[1] = y;
	this->to[2] = z;
}

float Perspectiva::getAngulo() const {
	return this->angulo;
}
float* Perspectiva::getFrom() {
	return this->from;
}
float* Perspectiva::getTo() {
	return this->to;
}

void Perspectiva::aplica() {
	gluPerspective(this->angulo, xy_aspect, this->getPerto(), this->getLonge());
	if(to[0] == from[0] && to[0] == from[0]) {
		gluLookAt(from[0] , from[1] , from[2] , to[0] , to[1] , to[2] , 1 , 0 , 0);
	} else {
		gluLookAt(from[0] , from[1] , from[2] , to[0] , to[1] , to[2] , 1 , 0 , 0);
	}
}


Ortho::Ortho() {
}

void Ortho::setEsquerda(float esquerda) {
	this->esquerda = esquerda;
}
void Ortho::setDireita(float direita) {
	this->direita = direita;
}
void Ortho::setTopo(float topo) {
	this->topo = topo;
}
void Ortho::setFundo(float fundo) {
	this->fundo = fundo;
}

float Ortho::getEsquerda() const {
	return this->esquerda;
}
float Ortho::getDireita() const {
	return this->direita;
}
float Ortho::getTopo() const {
	return this->topo;
}
float Ortho::getFundo() const {
	return this->fundo;
}

void Ortho::aplica() {
	glOrtho(this->esquerda, this->direita,this->fundo,this->topo, this->getPerto(), this->getLonge());
}